Computation on large data sets presents special problems in the field of computer science. As data sets expand in size, the data no longer fits within the memory footprint of an individual device. Distributed computing is one way to handle computations performed on the large data set, but distributed computing is complex. Software to be executed on multiple processors or processor cores is more complex than software to be executed on a single processor. Distributing the computation to processors on multiple devices, each storing a portion of a distributed data set, adds still more complexity. For these reasons, the programmer's job is made more difficult in a distributed computing environment.